package com.bbva.kyfb.kyfbofi.converters;

import java.util.List;

import com.bbva.jee.arq.spring.core.gce.ExcepcionEjecucionAplicacion;
import com.bbva.kyfb.kyfbdto.firmas.bo.EmpresaNifDto;
import com.bbva.kyfb.kyfbdto.firmas.bo.EmpresaNifOutDto;
import com.bbva.kyfb.kyfbdto.firmas.bo.EmpresaRefDto;
import com.bbva.kyfb.kyfbdto.firmas.bo.EmpresaRefOutDto;
import com.bbva.kyfb.kyfbdto.firmas.errores.Errores_kyfb_servicios;
import com.bbva.kyfb.kyfbdto.firmas.sistemasHost.EmpresaDto;
import com.bbva.kyfb.kyfbdto.firmas.sistemasHost.EmpresasFirOutNifDto;
import com.bbva.kyfb.kyfbdto.firmas.sistemasHost.EmpresasFirOutRefDto;

/**
 * The Class DtoToDtoBofiConverter.
 */
public final class DtoToDtoBofiConverter {

	/**
	 * Instantiates a new dto to dto bofi converter.
	 */
	private DtoToDtoBofiConverter() {
		//Evitamos instanciar la clase
	}
	
	/**
	 * Empresa dto to empresa nif dto.
	 *
	 * @param empresaDto the empresa dto
	 * @return the empresa nif dto
	 */
	public static EmpresaNifDto empresaDtoToEmpresaNifDto(final EmpresaDto empresaDto) {
		EmpresaNifDto empresaNifDto = new EmpresaNifDto();

		try {
			empresaNifDto.setCclien(empresaDto.getCclien().toString());
			empresaNifDto.setCdnitr(empresaDto.getCdnitr());
			empresaNifDto.setDenomb(empresaDto.getDenomb());
		} catch (NullPointerException e) {
			throw new ExcepcionEjecucionAplicacion(Errores_kyfb_servicios.ERROR_FORMATEO_RESPUESTA, e);
		}
		return empresaNifDto;
	}

	/**
	 * Empresa dto to empresa ref dto.
	 *
	 * @param empresaDto the empresa dto
	 * @return the empresa ref dto
	 */
	public static EmpresaRefDto empresaDtoToEmpresaRefDto(final EmpresaDto empresaDto) {
		EmpresaRefDto empresaRefDto = new EmpresaRefDto();
		try {
			empresaRefDto.setCclien(empresaDto.getCclien().toString());
			empresaRefDto.setCdnitr(empresaDto.getCdnitr());
			empresaRefDto.setDenomb(empresaDto.getDenomb());
		} catch (NullPointerException e) {
			throw new ExcepcionEjecucionAplicacion(Errores_kyfb_servicios.ERROR_FORMATEO_RESPUESTA, e);
		}

		return empresaRefDto;
	}

	/**
	 * Empresa firm out nif to empresa nif out dto.
	 *
	 * @param empresaFirmFirOutNifDto the empresa firm fir out nif dto
	 * @return the empresa nif out dto
	 */
	public static EmpresaNifOutDto empresaFirmOutNifToEmpresaNifOutDto(final EmpresasFirOutNifDto empresaFirmFirOutNifDto) {
		EmpresaNifOutDto empresaNifOutDto = new EmpresaNifOutDto();
		// empresaNifOutDto.setCodError("CodigoError");

		try {
			String cclienr = empresaFirmFirOutNifDto.getCclienr().toString();
			List<EmpresaNifDto> listaEmpresasNifOut = empresaNifOutDto.getEmpresaNifDto();
			EmpresaNifDto empresaNifAuxDto;
			for (EmpresaDto empresaDto : empresaFirmFirOutNifDto.getListaEmpresas()) {
				empresaNifAuxDto = empresaDtoToEmpresaNifDto(empresaDto);
				empresaNifAuxDto.setScodcliente(cclienr);
				listaEmpresasNifOut.add(empresaNifAuxDto);
			}
		} catch (NullPointerException e) {
			throw new ExcepcionEjecucionAplicacion(Errores_kyfb_servicios.NO_EXISTEN_DATOS_A_LISTAR, e);
		}

		return empresaNifOutDto;
	}

	/**
	 * Empresa firm out ref to empresa ref out dto.
	 *
	 * @param empresaFirmFirOutRefDto the empresa firm fir out ref dto
	 * @return the empresa ref out dto
	 */
	public static EmpresaRefOutDto empresaFirmOutRefToEmpresaRefOutDto(final EmpresasFirOutRefDto empresaFirmFirOutRefDto) {
		EmpresaRefOutDto empresaRefOutDto = new EmpresaRefOutDto();

		try {
			List<EmpresaRefDto> listaEmpresasRefOut = empresaRefOutDto.getEmpresasRefDto();
			for (EmpresaDto empresaDto : empresaFirmFirOutRefDto.getListaEmpresas()) {
				listaEmpresasRefOut.add(empresaDtoToEmpresaRefDto(empresaDto));
			}
		} catch (NullPointerException e) {
			throw new ExcepcionEjecucionAplicacion(Errores_kyfb_servicios.NO_EXISTEN_DATOS_A_LISTAR, e);
		}

		return empresaRefOutDto;
	}

}
